<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // Promise.race()
    // 也是接受一个由promise对象组成的数组作为参数
    // 成功和失败取决于最先改变状态的那个promise对象
    // 最先改变状态的那个promise对象变成了成功，race整体就成功了
    // 最先改变状态的那个promise对象变成了失败，race整体就失败了
    // 最先改变的那个结果，就是race方法最后的结果



    // 当一个请求长时间未响应时，希望给用户一个反馈，或者直接终止请求
    // 请求数据会封装成一个promise对象
    // 可以把请求的promise和自己封装的10秒钟的延迟定时器的promise做race处理



    const p1 = new Promise((resolve, reject) => {
      setTimeout(() => {
        let count = -3;
        if (count >= 0) {
          resolve("p1 成功了")
        } else {
          reject("p1 失败了")
        }
      }, 2000)
    })

    const p2 = new Promise((resolve, reject) => {
      setTimeout(() => {
        let num = 3;
        if (num >= 0) {
          resolve("p2 成功了")
        } else {
          reject("p2 失败了")
        }
      }, 4000)
    })

    Promise.race([p1, p2]).then(res => {
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  </script>
</body>
</html>